Finding faults in multi-threaded programs

نویسنده

  • Cyrille Artho
چکیده

Multi-threaded programming creates the fundamental problem that the execution of a program is no longer deterministic, because the thread schedule is not controlled by the application. This causes traditional testing methods to be rather ineffective. Trilogy, producing many multi-threaded server programs, also has to deal with the limitations of regression testing. New approaches to this problem – static and extended dynamic checking – promise to ameliorate the situation. Many tools are in development that try to find faults in multi-threaded programs in new ways. The first part of this report describes a detailed evaluation of a wide variety of dynamic and static checkers. That comparison always had the applicability to industrial software in mind. While none of the checking tools was a clear winner, certain tools are more useful in practice than others. Because simple cases are the most common ones in practice, the decision was made to extend Jlint, a simple, fast static Java program checker. The new Jlint can now also check for deadlocks in synchronized blocks in Java, which results in improved faultfinding capabilities. The extensions and their usefulness in an industrial environment are described in the second part of the report. Jlint has been applied to many core packages of Trilogy, and also a few other software packages, and shown various degrees of success.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Applying Static Analysis to Large-Scale, Multi-Threaded Java Programs

Static analysis is a tremendous help when trying to find faults in complex software. Writing multi-threaded programs is difficult, because the thread scheduling increases the program state space exponentially, and an incorrect thread synchronization produces faults that are hard to find. Program checkers have become sophisticated enough to find faults in real, large-scale software. In particula...

متن کامل

Sound, Precise and Efficient Static Race Detection for Multi-Threaded Programs

Title of dissertation: Sound, precise and efficient static race detection for multi-threaded programs Polyvios Pratikakis Doctor of Philosophy, 2008 Dissertation directed by: Professor Michael Hicks Professor Jeffrey S. Foster Department of Computer Science Multi-threaded programming is increasingly relevant due to the growing prevalence of multi-core processors. Unfortunately, the non-determin...

متن کامل

Distributed Verification of Multi-threaded C++ Programs

Verification of multi-threaded C++ programs poses three major challenges: the large number of states, states with huge sizes, and time intensive expansions of states. This paper presents our efforts in addressing these issues by combining an efficient use of hard disk with the distribution of the state space on several computing nodes. The approach is applicable to clusters and multi-core machi...

متن کامل

Partial Redundancy Elimination for Multi-threaded Programs

Multi-threaded programs have many applications which are widely used such as operating systems. Analyzing multi-threaded programs differs from sequential ones; the main feature is that many threads execute at the same time. The effect of all other running threads must be taken in account. Partial redundancy elimination is among the most powerful compiler optimizations: it performs loop-invarian...

متن کامل

Case Study: Using Inspect to Verify and fix bugs in a Work Stealing Deque Simulator

Writing bug-free multi-threaded programs is hard. Bugs in these programs have various types such as deadlock, live lock, race condition, starvation, and so on. These bugs are hard to be detected because that they may only be excited by certain interleaving of instructions. Most of time, we can not find the bugs by only observing the program outputs since the buggy interleaving of instructions w...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2001